/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package controle;

import java.util.ArrayList;
import modelo.Aluno;
import modelo.Banca;
import modelo.Defesa;
import modelo.Membro_Banca;
import modelo.Membro_Externo;
import modelo.Orientador;
import modelo.Professor;
import modelo.Universidade;
import modelo.Usuario;
/**
 *
 * @author MoroComputer
 */
public class RestauraDados {

    private int idUser;

    public RestauraDados(int idUser) {
        this.idUser = idUser;
    }

    public RestauraDados() {

    }

    public ArrayList<String> recuperarDadosDePerfil(Usuario usuario) {
        if (usuario instanceof Aluno) {
            Aluno aluno = new Aluno();
            return aluno.acessarPerfil(this.idUser);
        } else if (usuario instanceof Professor) {
            Professor professor = new Professor();
            return professor.acessarPerfil(this.idUser);
        } else if (usuario instanceof Membro_Externo) {
            Membro_Externo membroExterno = new Membro_Externo(null, null, null, null, null);
            return membroExterno.acessarPerfil(this.idUser);
        }
        return null;
    }

    public ArrayList<String> recuperaProfessores() {
        ArrayList<String> resultado = new ArrayList<>();

        Universidade universidade = new Universidade();
        ArrayList<Professor> professores = universidade.recuperaProfessores();
        for (int x = 0; x < professores.size(); x++) {
            resultado.add(professores.get(x).getNome());
        }
        return resultado;
    }
    public ArrayList<String> recuperaProfessores(int idUser) {
        ArrayList<String> resultado = new ArrayList<>();
        Professor professor= new Professor();
        ArrayList<String> perfil= professor.acessarPerfil(idUser);
        String nomeProfessor= perfil.get(0);
        Universidade universidade = new Universidade();
        
        ArrayList<Professor> professores = universidade.recuperaProfessores(nomeProfessor);
        for (int x = 0; x < professores.size(); x++) {
            resultado.add(professores.get(x).getNome());
        }
        return resultado;
    }

    public ArrayList<String> restauraSolicitacaoOrientacao(int idAluno) {
        /*Titulo tcc, orientador, status*/
        Aluno aluno = new Aluno();
        return aluno.restauraSolicitacaoDeOrientacao(idAluno);
    }

    public ArrayList<String> restauraSolicitacoesDeOrientacao(int idProfessor) {
        Orientador orientador = new Orientador();
        return orientador.restaurarTrabalhosSolicitadosParaOrientacao(idProfessor);
    }

    public ArrayList<String> restauraMembroExternos(){
        Membro_Externo mebMembro_Externo= new Membro_Externo();
        return mebMembro_Externo.recuperarRegistrosDeColegas();
    }
    public ArrayList<String> restauraAlunosOrientados(int idProfessor) {
        Orientador orientador = new Orientador();
        ArrayList<Aluno> alunos = orientador.recuperaAlunosOrientados(idProfessor);
        ArrayList<String> dados = new ArrayList<>();

        for (int count = 0; count < alunos.size(); count++) {
            Aluno aluno= alunos.get(count);
            dados.add(aluno.getNome());
            dados.add(aluno.getEmail());
        }
        return dados;
    }
    public ArrayList<String> restauraDefesaDoAluno(String nomeAluno){
        Aluno aluno= new Aluno();
        int idAluno= aluno.recuperaIdAlunoPorNome(nomeAluno);
        
        if(idAluno!=0){
        Defesa defesa= new Defesa(new Aluno(nomeAluno), null, null, null);
        if(defesa.verificarExistenciaDeDefesa(idAluno)){
            return defesa.recuperarDadosDeDefesa();
        }else{
            return null;
        }
      }
        return null;
    }
    public ArrayList<String> restauraDefesaDoAluno(int idAluno){
        Aluno aluno= new Aluno();        
        ArrayList<String> perfil= aluno.acessarPerfil(idAluno);
        if(perfil.get(0)!=null){
        Defesa defesa= new Defesa(new Aluno(perfil.get(0)), null, null, null);
        if(defesa.verificarExistenciaDeDefesa(idAluno)){
            return defesa.recuperarDadosDeDefesa();
        }else{
            return null;
        }
      }
        return null;
    }
    public ArrayList<String> restauraMembrosDaBanca(int idAluno){
       Defesa defesa= new Defesa(null, null, null, null);
       int idDefesa= defesa.recuperaIdDefesa(idAluno);
       if(idDefesa!=0){
           int idBanca= defesa.recuperaIdBanca(idDefesa);
           if(idBanca!=0){
               Banca banca= new Banca();
               return banca.recuperaProfessoresDaBanca(idBanca);
           }
       }
       return null;
    }
    
    public ArrayList<String> recuperaDadosDeBancas(int idUser){
        //tema do trabalho, aluno, orientador, colega de banca, colega de banca
        Membro_Banca membro= new Membro_Banca();
        return membro.recuperarTrabalhosQueAvalio(idUser);
    }
}
